package com.ctg.itrdc.imageconsole.service;

import java.util.List;

import com.ctg.itrdc.imageconsole.data.entity.AutoscalePolicy;
import com.ctg.itrdc.imageconsole.data.entity.DockerMicroService;



/**
 * 
 * @Description 自动伸缩
 * @author wupiao
 * @since 2017年2月16日
 */
public interface IAutoElasticService {

	/**
	 * 
	 * 获取所有启动了自动伸缩，且指标为 时间周期 ,且状态为启用的服务
	 * 
	 * @return List<DockerMicroService>
	 * @author wupiao
	 * @since 2017年2月16日
	 */
	public List<DockerMicroService> getNeedAutoScaleServices();

	/**
	 * 
	 * 开启自动伸缩
	 * 
	 * @param manageDetail
	 * @return void
	 * @author wupiao
	 * @since 2017年2月16日
	 */
	public void startAutoElastic(String apiServerUrl, String namespace
			, String dpName, AutoscalePolicy policy, Long createUserId);
	
	/**
	 * 修改自动伸缩
	 *  
	 * @param manageDetail
	 * @return void
	 * @author wupiao
	 * @since 2017年2月21日
	 */
	public void modifyAutoElastic(String apiServerUrl, String namespace
			, String dpName, AutoscalePolicy policy, Long createUserId);
	
	/**
	 * 开启一个定时任务对rc进行自动伸缩
	 *  
	 * @param manageDetail
	 * @return void
	 * @author wupiao
	 * @since 2017年2月19日
	 */
	public void startAutoElasticJobForTime(String apiServerUrl, String namespace
			, String dpName, AutoscalePolicy policy, Long createUserId);

	/**
	 * 停止一个自动伸缩定时任务
	 *  
	 * @param manageDetail
	 * @return void
	 * @author wupiao
	 * @since 2017年2月22日
	 */
	public void stopAutoElastic(String apiServerUrl, String namespace
			, String dpName, AutoscalePolicy policy, Long createUserId);
	
}
